// 所有接口返回的相同的数据类型
export interface ResponseDate {
  code: number
  message: string
  ok: boolean
}
// SPU数据的ts类型
export interface SpuData {
  id?: number | null // 当前spu的id 已有的数据存在id,新增的数据不存在id
  spuName: string // spu名称
  description: string // spu描述
  category3Id: number | null // spu的三级分类id
  tmId: number | null // spu的品牌id
  spuSaleAttrList: SaleAttr[] | null // spu销售属性列表
  spuImageList: SpuImg[] | null // spu图片列表
}
// SPU数据列表的ts类型
export type Records = SpuData[]
// 获取已有的SPU接口返回的数据类型
export interface HasSupResponseDate extends ResponseDate {
  data: {
    records: Records
    total: number // 总页码
    size: number // 当前一页显示多少条数据
    current: number // 当前页码
    searchCount: boolean
    pages: number // 总页码
  }
}

// 所有品牌数据的ts类型
export interface TradeMark {
  id: number
  tmName: string
  logoUrl: string
}
// 品牌接口返回的数据的ts类型
export interface AllTradeMark extends ResponseDate {
  data: TradeMark[]
}

// 商品图片的TS类型
export interface SpuImg {
  id?: number
  spuId?: number
  imgName?: string
  imgUrl?: string
  name?: string
  url?: string
}
// 已有的SPU的照片墙的数据类型
export interface SpuHasImg extends ResponseDate {
  data: SpuImg[]
}

// 已有的销售属性值对象的类型
export interface SaleAttrValue {
  id?: number
  spuId?: number
  baseSaleAttrId: number
  saleAttrValueName: string
  saleAttrName?: string
  isChecked?: null
}
// 存储已有的销售属性值类型
export type SpuSaleAttrValueList = SaleAttrValue[]
// 销售属性对象的ts类型
export interface SaleAttr {
  id?: number
  spuId?: number
  baseSaleAttrId: number
  saleAttrName: string
  spuSaleAttrValueList: SpuSaleAttrValueList
  flag?: boolean // 用于控制显示输入框/添加按钮
  saleAttrValue?: string // 用于收集input中新增的属性值
}
// SPU已有的销售属性接口返回数据的ts类型
export interface SaleAttrResponseData extends ResponseDate {
  data: SaleAttr[]
}

// 项目全部的销售属性对象的ts类型
export interface HasSaleAttr {
  id: number
  name: string
}
// 项目全部的销售属性返回数据的ts类型
export interface AllSaleAttrResponseDate extends ResponseDate {
  data: HasSaleAttr[]
}

// 新增的SKU的ts数据类型
export interface SkuData {
  category3Id: number | null // 三级分类的id
  spuId: number | null // 已有的SPU的id
  tmId: number | null // SPU品牌id
  weight: string | null // sku重量
  price: number | null // sku价格
  skuName: string // sku名称
  skuDesc: string // sku描述
  skuDefaultImg: string // 默认售卖商品的图片地址
  // 已选平台属性列表
  skuAttrValueList: {
    attrId: number // 平台属性的id
    valueId: number // 属性值的id
  }[]
  // 已选的销售属性列表
  skuSaleAttrValueList: {
    saleAttrId: number // 销售属性的id
    saleAttrValueId: number // 销售属性值的id
  }[]
}

// 获取某一个SPU下售卖的SKU的数据ts类型
export interface SkuInfoData extends ResponseDate {
  data: SkuData[]
}
